package TP2.modelo;

import java.awt.Point;
import java.io.Serializable;


public class MoverRectoEnVertical implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -2496898507916448859L;
	boolean haciaAdelante;
	float radio;
	int velocidadAvion;
	
	public MoverRectoEnVertical(float radioDeColision, int velocidad){
		
		velocidadAvion = velocidad;
		radio = radioDeColision;
		haciaAdelante = true;
	}
	
	//Verifica la direccion actual y la invierte.
	public void invertirDireccionDeMovimiento(){
		
		if(haciaAdelante == true)
			haciaAdelante = false;
		else
			haciaAdelante = true;
	
	}
	
	
	public Point mover(Point posicionActual){
		
		Point limiteMaximo;
		Point limiteMinimo;	
		
		Escenario escenario = Escenario.getInstancia();
		LimitesDelEscenario limitesDeMovimiento = escenario.getLimites();
		
		limiteMaximo = limitesDeMovimiento.getLimiteMaximo();
		limiteMinimo = limitesDeMovimiento.getLimiteMinimo();
		
		//Verificamos los limites superior e inferior, y llegado el caso invierto la direccion de movimiento
		if(posicionActual.getY() - (limiteMinimo.getY()) <= (3*radio)){
			if (haciaAdelante)
				this.invertirDireccionDeMovimiento();
		}
				
		if (((limiteMaximo.getY())-(posicionActual.getY()) <= radio)){
			if (!haciaAdelante)
				this.invertirDireccionDeMovimiento();
		}
			
		
		//Desplazamos el movil
		if(haciaAdelante)
			posicionActual.translate(0, (-1)*velocidadAvion);
		else
			posicionActual.translate(0, velocidadAvion);
		
		return posicionActual;
	}
	
	
	
}
